#include <stdio.h>
/*题目：
有A、B、C、D、E五种商品，预算X，求最多可以消费多少钱，几种消费方式？
*/



void test()
{
   int A,B,C,D,E,X,j;
   printf("请分别输入五种商品的价格和预算:->");
   scanf("%d %d %d %d %d %d",&A,&B,&C,&D,&E,&X);
   int bit0,bit1,bit2,bit3,bit4;  //bit位控制商品的买卖 0和1
   int count=0; //计数
   int max_count=0; //最大花费
   //00000-11111  32种选择 2^5
   for(int i=0;i<32;i++)  //求出最大花费
   {
        //bit0-bit4 分别对应A-E商品的买与不买 1与0
        //!!将数值转换为0 1
        bit0=!!(i&(1<<0));
        bit1=!!(i&(1<<1));
        bit2=!!(i&(1<<2));
        bit3=!!(i&(1<<3));
        bit4=!!(i&(1<<4));
        count=bit0*A+bit1*B+bit2*C+bit3*D+bit4*E;
        if(count <= X)
        {
          if(count>max_count)
          {
            max_count=count;
          }
        }
   }
  printf("最大消费:%d\n",max_count);
  printf("购买方式:\n");
   for(int i=0;i<32;i++)  //打印出购买方式
   {
        bit0=!!(i&(1<<0));
        bit1=!!(i&(1<<1));
        bit2=!!(i&(1<<2));
        bit3=!!(i&(1<<3));
        bit4=!!(i&(1<<4));
        count=bit0*A+bit1*B+bit2*C+bit3*D+bit4*E;
      if(count==max_count)
      {
        for(j=0;j<5;j++)
        {
            if(!!(i&(1<<j)))
            {
              printf("%c ",'A'+j);
            }
            else
            {
              printf("  ");
            }
        }
        printf("\n");
      }
   }
}

int main()
{
    test();
    return 0;
}